const path = require('path')

const config = {
  // 项目名称
  projectName: 'yanshop2.0',
  // 项目创建日期
  date: '2020-4-11',
  // 设计稿尺寸
  designWidth: 750,
  // 设计稿倍率
  deviceRatio: {
    640: 2.34 / 2,
    750: 1,
    828: 1.81 / 2
  },
  // 项目源码目录
  sourceRoot: 'src',
  // 项目产出目录
  outputRoot: 'dist',
  // babel 编译配置
  babel: {
    sourceMap: true,
    presets: ['env'],
    plugins: ['transform-class-properties', 'transform-decorators-legacy', 'transform-object-rest-spread']
  },
  // JS 代码压缩
  terser: {
    enable: true,
    config: {
      // 配置项同 https://github.com/terser/terser#minify-options
    }
  },
  // CSS 代码压缩
  csso: {
    enable: true,
    config: {
      // 配置项同 https://github.com/css/csso#minifysource-options
    }
  },
  // 编译插件配置
  plugins: [],
  // 全局变量设置
  defineConstants: {
  },
  // 框架，react，nerv，vue 三选一
  framework: 'react',
  // 小程序端专用配置
  mini: {
    // 配置 postcss 相关插件
    postcss: {
      // px尺寸 配置项
      pxtransform: {
        enable: true,
        config: {
          onePxTransform: true,
          unitPrecision: true
        }
      },
      // 小程序端样式引用本地资源内联配置
      url: {
        enable: true,
        config: {
          limit: 1024 // 设定转换尺寸上限
        }
      },
      cssModules: {
        enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
        config: {
          namingPattern: 'module', // 转换模式，取值为 global/module
          generateScopedName: '[name]__[local]___[hash:base64:5]'
        }
      }
    },
    // 小程序编译过程的相关配置
    compile: {
      // 决定小程序打包时是否需要压缩 wxml
      compressTemplate: true,
      // 配置小程序编译过程中排除不需要经过 Taro 编译的文件，数组类型，写文件路径，文件路径必须以源码所在 src 目录开头
      exclude: []
    },
    // 自定义 Webpack 配置
    webpackChain: {},
    // 针对 mp4 | webm | ogg | mp3 | wav | flac | aac 文件的 url-loader 配置 https://github.com/webpack-contrib/url-loader
    mediaUrlLoaderOption: {
      limit: 8192
    },
    // 针对 woff | woff2 | eot | ttf | otf 文件的 url-loader 配置 https://github.com/webpack-contrib/url-loader
    fontUrlLoaderOption: {},
    // 针对 png | jpg | jpeg | gif | bpm | svg 文件的 url-loader 配置 https://github.com/webpack-contrib/url-loader
    imageUrlLoaderOption: {},
  },
  // H5 端专用配置
  h5: {
    // 设置输出解析文件的目录
    publicPath: '/',
    // 编译后的静态文件目录
    staticDirectory: 'static',
    postcss: {
      autoprefixer: {
        enable: true,
        config: {
        }
      },
      cssModules: {
        enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
        config: {
          namingPattern: 'module', // 转换模式，取值为 global/module
          generateScopedName: '[name]__[local]___[hash:base64:5]'
        }
      },
      pxtransform: {
        enable: true,
        config: {
          onePxTransform: true,
          unitPrecision: true
        }
      },
    },
    // 自定义 Webpack 配置
    webpackChain: {},
    // 反向代理配置 https://webpack.js.org/configuration/dev-server
    devServer: {},
    // 输出配置
    output: {
      filename: 'js/[name].[hash:8].js',
      chunkFilename: 'js/[name].[chunkhash:8].js'
    }
  },
  // 路径别名
  alias: {
    '@/components': path.resolve(__dirname, '..', 'src/components'),
    '@/pages': path.resolve(__dirname, '..', 'src/pages'),
    '@/pkgshop': path.resolve(__dirname, '..', 'src/pkgshop'),
    '@/pkgmarketing': path.resolve(__dirname, '..', 'src/pkgmarketing'),
    '@/pkgcustom': path.resolve(__dirname, '..', 'src/pkgcustom'),
    '@/pkgutils': path.resolve(__dirname, '..', 'src/pkgutils'),
    '@/utils': path.resolve(__dirname, '..', 'src/utils'),
    '@/app.config': path.resolve(__dirname, '..', 'src/app.config.ts'),
  }
}

module.exports = function (merge) {
  if (process.env.NODE_ENV === 'development') {
    return merge({}, config, require('./dev'))
  }
  return merge({}, config, require('./prod'))
}
